﻿Imports System.Reflection
Imports _7Wonders.Cartes

Module Module1

    Private _jeu As Jeu7Wonders

    Sub Main()

        Dim nbrJoueur As Integer = 7


        ' Initialier le jeu
        _jeu = New Jeu7Wonders()

        AjouterJoueurs(nbrJoueur)
        AjouterNotifications()

        _jeu.InitialiserJeu()

        ' Age I
        For i As Integer = 0 To 6
            For Each joueur As JoueurDebutant In _jeu.Joueurs
                'joueur.AfficherMain()
                joueur.Jouer()

            Next
            ' Passer les cartes à son voisin
            Dim lst As New List(Of Carte)
            For j As Integer = 0 To _jeu.Joueurs.Count - 1
                If j = 0 Then
                    lst.AddRange(_jeu.Joueurs(j).Main)
                End If
                Dim j2 As Integer = j + 1
                If j2 <> _jeu.Joueurs.Count Then
                    _jeu.Joueurs(j).Main.Clear()
                    _jeu.Joueurs(j).Main.AddRange(_jeu.Joueurs(j2).Main)
                Else
                    _jeu.Joueurs(j).Main.Clear()
                    _jeu.Joueurs(j).Main.AddRange(lst)
                End If
            Next
            Console.WriteLine()
        Next

        For Each joueur As Joueur In _jeu.Joueurs
            Console.WriteLine(String.Format("joueur: {0} Montant: {1}", joueur.NomJoueur, joueur.Plateau.PiecesMonnaies))
            joueur.AfficherMain()
            joueur.AfficherJeu()
            joueur.AfficherJeuxVoisins()
            joueur.AfficherRessourcesVoisinGauche()
            joueur.AfficherRessourcesProduites()
            joueur.AfficherRessourcesVoisinDroite()
        Next

            Console.Read()

    End Sub

    Private Sub AjouterJoueurs(nombreJoueur As Integer)

        For i As Integer = 0 To nombreJoueur - 1
            _jeu.AjouterUnJoueur(New JoueurDebutant(String.Format("Joueur_{0}", i)))
        Next
    End Sub

    Private Sub AjouterNotifications()
        For i As Integer = 0 To _jeu.Joueurs.Count - 1
            If i = 0 Then
                _jeu.Joueurs(i).AjouterObservateur(_jeu.Joueurs(_jeu.Joueurs.Count - 1), Sujet.EmplacementVoisin.Gauche)
                _jeu.Joueurs(i).AjouterObservateur(_jeu.Joueurs(1), Sujet.EmplacementVoisin.Droite)
            ElseIf i = _jeu.Joueurs.Count - 1 Then
                _jeu.Joueurs(i).AjouterObservateur(_jeu.Joueurs(_jeu.Joueurs.Count - 2), Sujet.EmplacementVoisin.Gauche)
                _jeu.Joueurs(i).AjouterObservateur(_jeu.Joueurs(0), Sujet.EmplacementVoisin.Droite)
            Else
                _jeu.Joueurs(i).AjouterObservateur(_jeu.Joueurs(i - 1), Sujet.EmplacementVoisin.Gauche)
                _jeu.Joueurs(i).AjouterObservateur(_jeu.Joueurs(i + 1), Sujet.EmplacementVoisin.Droite)
            End If
        Next
    End Sub

    Function RandomizeList(myList As List(Of Carte)) As List(Of Carte)
        Dim r As New Random(Now.Millisecond)
        Return (From myX As Carte In myList Order By r.Next() Select myX).ToList()
    End Function

End Module
